/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.una.scece.gestores;

import com.una.scece.conexion.Conexion;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 *
 * @author Erick
 */
public class gestorPagos {

    private static Conexion cx = new Conexion();
    private static PreparedStatement stmt = null;
    private static ResultSet rs = null;
    private static Connection conn = null;

    public static void agregarComprobante(String pIdentificacion, String pRuta, Date pFecha, double pMonto, int pAnio, String pTrimestre) throws Exception {
        conn = cx.conectar();
        stmt = conn.prepareStatement("CALL agregarPago(?,?,?,?,?,?)");
        stmt.setString(1, pIdentificacion);
        stmt.setString(2, pRuta);
        stmt.setDate(3, pFecha);
        stmt.setDouble(4, pMonto);
        stmt.setInt(5, pAnio);
        stmt.setString(6, pTrimestre);
        stmt.executeUpdate();
        stmt.close();
    }
    
    public static void agregarTotalCiclo(String pIdentificacion, int pCantidadCursos, double pTotal, double pSaldo, int pAnio, String pCiclo) throws Exception{
        conn = cx.conectar();
        stmt = conn.prepareStatement("call agregarTotalCiclo(?,?,?,?,?,?)");
        stmt.setString(1, pIdentificacion);
        stmt.setInt(2, pCantidadCursos);
        stmt.setDouble(3, pTotal);
        stmt.setDouble(4, pSaldo);
        stmt.setInt(5, pAnio);
        stmt.setString(6, pCiclo);
        stmt.executeUpdate();
        stmt.close();
    }
    
    private static void actualizarTotalCiclo(String pIdentificacion, double pMonto, int pAnio, String pCiclo) throws Exception{
        conn = cx.conectar();
        stmt = conn.prepareStatement("call actualizarSaldoCiclo(?,?,?,?)");
        stmt.setString(1, pIdentificacion);
        stmt.setDouble(2, pMonto);
        stmt.setInt(3, pAnio);
        stmt.setString(4, pCiclo);
        stmt.executeUpdate();
        stmt.close();
    }
    
    private static void actualizarHistorialPago(String pIdentificacion, Date pFecha, int pEstado) throws Exception{
        conn = cx.conectar();
        stmt = conn.prepareStatement("call actualizarHistorialPago(?,?,?)");
        stmt.setString(1, pIdentificacion);
        stmt.setDate(2, pFecha);
        stmt.setInt(3, pEstado);
        stmt.executeQuery();
        stmt.close();
    }
    
    public static void aprobarPago(String pIdentificacion, Date pFecha) throws Exception{
        conn = cx.conectar();
        stmt = conn.prepareStatement("call cargarReportePagosPendientes(?,?)");
        stmt.setString(1, pIdentificacion);
        stmt.setDate(2, pFecha);
        rs = stmt.executeQuery();
        rs.next();
        double monto = rs.getDouble("monto_pago");
        int anio = rs.getInt("anio");
        String ciclo = rs.getString("ciclo");
        rs.close();
        stmt.close();
        stmt = null;
        actualizarTotalCiclo(pIdentificacion,monto,anio,ciclo);
        actualizarHistorialPago(pIdentificacion,pFecha,2);
    }
}
